package com.tedu.api.thread;

/**
 * 线程:单线程[main主线程],多线程,创建两个线程以上同时处理一件事情[并发]
 *     多线程并发
 * 多人聊天室   Version 2   多个人在同一个服务器聊天
 *
 * 多线程案例:
 *       Kitchen 厨房类---  两个厨子--两个线程---炒菜
 *       chef    厨子类---每个厨子使用厨房炒不同的菜系[并发]
 */
public class Kitchen {
    public static void main(String[] args) {
        //创建线程--直接使用lambda表达式[没有并发]
        // [并发---实现Runnable]
        Thread chef1=new Thread(new Chef("西红柿炒鸡蛋"));//
        Thread chef2=new Thread(new Chef("辣椒炒肉"));
        Thread chef3=new Thread(new Chef("红烧肉"));
        chef1.start();//厨子   1~3秒   西红柿炒鸡蛋
        chef2.start();
        chef3.start();
    }
}
//1.创建厨子类:每个厨子炒不同的菜---线程:Runnable接口[项目:建议结构合理]
class Chef implements Runnable{
    private String dishName;//私有属性
    //2.传入一个构造器:通过构造器确定,哪位厨子炒什么菜--并发确定哪位厨子
    public Chef(String dn){
        //私有菜系
        this.dishName=dn;
    }
    //3.实现厨子功能:1到3秒随机炒出一道菜
    public void run() {
        System.out.println("开始准备:"+dishName);
    //准备时间:1~3秒---Random随机数类--->Math数学类,随机数random()
        /**
         * Math.random():生成一个随机数,范围:0.0~1.0之间浮点数[不包括1.0]
         * Math.random()*3000,生成随机数:
         *                    范围:0.0~3000.0之间浮点数[不包括3000]
         *       转换成long:0到2999的整数     012    123
         * (long)(Math.random()*3000)+1000
         *   范围:  1000~3999       随机数:1 2 3
         */
        try {
            Thread.sleep((long)(Math.random()*3000)+1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("准备完毕,请开吃");
    }
}